home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / eiffel / smalleif.97 / se.t / SmallEiffel / bin_c / compile_to_c6.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-02  |  52.3 KB  |  1,999 lines

  1. /* ANSI C code generated by SmallEiffel. */
  2. /*
  3. -- SmallEiffel  -- Release (- 0.97)    --      FRANCE
  4. -- Copyright (C), 1994 - Dominique COLNET and Suzanne COLLIN 
  5. -- University Henri Poincare' - Nancy 1 - email colnet@loria.fr 
  6. -- CRIN (Centre de Recherche en Informatique de Nancy)
  7. -- FRANCE 
  8. */
  9. #include "compile_to_c.h"
  10. void rT239make(T239 *C,T0 * a1,T0 * a2){
  11. C->_comment=a2;
  12. C->_expression=a1;
  13. }
  14. T0 * rT238to_runnable(T238 *C,T0 * a1){
  15. T0 * R=NULL;
  16. /*IF*/if (!(XrT68current_type((C)->_expression))) {
  17. C->_expression=XrT68to_runnable((C)->_expression,a1);
  18. R=(T0 *)C;
  19. }
  20. else {
  21. R=rT238clone(C,(T0 *)C);
  22. /*(IRF3*/(((T238*)R)->_expression)=(XrT68to_runnable((C)->_expression,a1));
  23. /*)*/}
  24. /*FI*/return R;
  25. }
  26. int rT238use_current(T238 *C){
  27. int R=0;
  28. R=XrT68use_current((C)->_expression);
  29. return R;
  30. }
  31. T0* rT238clone(T238 *C,T0* a1){
  32. T0* R=NULL;
  33. /*IF*/if (((int)a1)) {
  34. R=(T0 *)new(a1->id);
  35. AF_1
  36. XrT28copy(R,a1);
  37. AF_0
  38. }
  39. /*FI*/return R;
  40. }
  41. void rT238copy(T238 *C,T0 * a1){
  42. /*IF*//*AF*//*AE*/
  43. memcpy(C,a1,s[C->id]);
  44. /*FI*/}
  45. void rT238make(T238 *C,T0 * a1,T0 * a2,T0 * a3){
  46. C->_comment=a3;
  47. C->_tag=a1;
  48. C->_expression=a2;
  49. }
  50. T0* rT236runnable(T236 *C,T0* a1,T0 * a2,T0 * a3){
  51. T0* R=NULL;
  52. T0 * _a=NULL;
  53. int _i=0;
  54. /*IF*/if (!(rT158empty((T158*)a1))) {
  55. R=rT236clone(C,a1);
  56. _i=1;
  57. while (!((_i)>(((T158*)R)->_upper))) {
  58. rT52push((T52*)oRBC27small_eiffel,a3);
  59. _a=rT64to_runnable((T64*)rT158item((T158*)R,_i),a2);
  60. /*IF*/if (!(_a)) {
  61. rT236error(rT64start_position((T64*)rT158item((T158*)R,_i)),(T0 *)ms477);
  62. }
  63. else {
  64. rT158put((T158*)R,_a,_i);
  65. }
  66. /*FI*/rT52pop((T52*)oRBC27small_eiffel);
  67. _i=(_i)+(1);
  68. }
  69. }
  70. /*FI*/return R;
  71. }
  72. T0 * rT236to_runnable(T236 *C,T0 * a1){
  73. T0 * R=NULL;
  74. /*IF*/if (!((C)->_current_type)) {
  75. C->_current_type=a1;
  76. /*IF*/if (((int)(C)->_list)) {
  77. C->_list=rT236runnable(C,(C)->_list,a1,rT52top_rf((T52*)oRBC27small_eiffel));
  78. }
  79. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  80. R=(T0 *)C;
  81. }
  82. /*FI*/}
  83. else {
  84. R=rT236clone(C,(T0 *)C);
  85. /*(IRF3*/(((T236*)R)->_current_type)=(NULL);
  86. /*)*/R=rT236to_runnable((T236*)R,a1);
  87. }
  88. /*FI*/return R;
  89. }
  90. void rT236error(/*C*/T0 * a1,T0* a2){
  91. /*UT*/(T45*)oRBC27eh;
  92. rT45add_position(a1);
  93. rT45error((T45*)oRBC27eh,a2);
  94. }
  95. int rT236use_current(T236 *C){
  96. int R=0;
  97. int _i=0;
  98. /*IF*/if (((int)(C)->_list)) {
  99. _i=((T158*)(C)->_list)->_upper;
  100. while (!((R)||((_i)==(0)))) {
  101. R=rT64use_current((T64*)rT158item((T158*)(C)->_list,_i));
  102. _i=(_i)-(1);
  103. }
  104. }
  105. /*FI*/return R;
  106. }
  107. T0* rT236clone(T236 *C,T0* a1){
  108. T0* R=NULL;
  109. /*IF*/if (((int)a1)) {
  110. R=(T0 *)new(a1->id);
  111. AF_1
  112. XrT28copy(R,a1);
  113. AF_0
  114. }
  115. /*FI*/return R;
  116. }
  117. void rT236compile_to_c(T236 *C){
  118. int _i=0;
  119. /*(IRF3*/(((T40*)oRBC27cpp)->_check_assertion_mode)=(/*(IRF4*/(T0 *)ms1305/*)*/);
  120. /*)*//*IF*/if (((int)(C)->_list)) {
  121. rT40put_string((T40*)oRBC27cpp,(T0 *)ms775);
  122. rT40put_string((T40*)oRBC27cpp,/*(IRF4*/(T0 *)ms1305/*)*/);
  123. rT40put_string((T40*)oRBC27cpp,(T0 *)ms776);
  124. rT40put_string((T40*)oRBC27cpp,/*(IRF4*/(T0 *)ms1305/*)*/);
  125. rT40put_string((T40*)oRBC27cpp,(T0 *)ms777);
  126. _i=1;
  127. while (!((_i)>(((T158*)(C)->_list)->_upper))) {
  128. rT64compile_to_c((T64*)rT158item((T158*)(C)->_list,_i));
  129. _i=(_i)+(1);
  130. }
  131. rT40put_string((T40*)oRBC27cpp,(T0 *)ms783);
  132. rT40put_string((T40*)oRBC27cpp,/*(IRF4*/(T0 *)ms1305/*)*/);
  133. rT40put_string((T40*)oRBC27cpp,(T0 *)ms784);
  134. }
  135. /*FI*/}
  136. void rT236copy(T236 *C,T0 * a1){
  137. /*IF*//*AF*//*AE*/
  138. memcpy(C,a1,s[C->id]);
  139. /*FI*/}
  140. void rT236make(T236 *C,T0 * a1,T0 * a2,T0* a3){
  141. C->_start_position=a1;
  142. C->_header_comment=a2;
  143. C->_list=a3;
  144. }
  145. void rT38put_integer(T38 *C,int a1){
  146. /*(IRF3*/(((T7*)(T0 *)ms44)->_count)=(0);
  147. /*)*/rT2append_in(a1,(T0 *)ms44);
  148. rT38put_string(C,(T0 *)ms44);
  149. }
  150. void rT38die_with_code(T38 *C,int a1){
  151. exit(a1);
  152. }
  153. void rT38put_string(T38 *C,T0* a1){
  154. int _i=0;
  155. _i=1;
  156. while (!((_i)>(((T7*)a1)->_count))) {
  157. rT38put_character(C,rT7_ix64((T7*)a1,_i));
  158. _i=(_i)+(1);
  159. }
  160. }
  161. int rT38is_connected(T38 *C){
  162. int R=0;
  163. R=((int)(C)->_path);
  164. return R;
  165. }
  166. void rT38crash(T38 *C){
  167. rsp();
  168. rT38die_with_code(C,1);
  169. }
  170. void rT38disconnect(T38 *C){
  171. int _err=0;
  172. _err=fclose((C)->_output_stream);
  173. C->_path=NULL;
  174. C->_output_stream=stdout;
  175. }
  176. void rT38connect_to(T38 *C,T0* a1){
  177. C->_mode=(T0 *)ms527;
  178. C->_output_stream=rT38fopen(C,a1,(C)->_mode);
  179. /*IF*/{/*AT*/C->_path=a1;
  180. }
  181. /*FI*/}
  182. void rT38append_file(T38 *C,T0* a1){
  183. char _c='\0';
  184. rT39connect_to((T39*)rT38tmp_file_read(),a1);
  185. rT39read_character((T39*)rT38tmp_file_read());
  186. while (!(rT39end_of_input((T39*)rT38tmp_file_read()))) {
  187. _c=rT39last_character((T39*)rT38tmp_file_read());
  188. rT38put_character(C,_c);
  189. rT39read_character((T39*)rT38tmp_file_read());
  190. }
  191. rT39disconnect((T39*)rT38tmp_file_read());
  192. }
  193. int ofBC34tmp_file_read=0;
  194. T0*oRBC34tmp_file_read;
  195. T0 * rT38tmp_file_read(/*C*/void){
  196. T0 * R=NULL;
  197. if (ofBC34tmp_file_read==0){
  198. ofBC34tmp_file_read=1;
  199. {T39 *n=((T39*)new(39));
  200. /*(IRF3*/((n)->_mode)=((T0 *)ms26);
  201. /*)*/R=(T0 *)n;}
  202. oRBC34tmp_file_read=R;}
  203. return oRBC34tmp_file_read;}
  204. void * rT38fopen(T38 *C,T0* a1,T0* a2){
  205. void * R=NULL;
  206. rT7extend((T7*)a1,'\0');
  207. rT7extend((T7*)a2,'\0');
  208. R=(T0 *)fopen(((Tstring *)a1)->_storage,((Tstring *)a2)->_storage);
  209. rT7remove_last((T7*)a1,1);
  210. rT7remove_last((T7*)a2,1);
  211. return R;
  212. }
  213. void rT38copy(T38 *C,T0 * a1){
  214. /*IF*//*AF*//*AE*/
  215. memcpy(C,a1,s[C->id]);
  216. /*FI*/}
  217. void rT38put_character(T38 *C,char a1){
  218. char _err='\0';
  219. _err=fputc(a1,(C)->_output_stream);
  220. /*IF*/if ((_err)!=(a1)) {
  221. rT33put_string((T33*)oRBC1std_error,(T0 *)ms1);
  222. rT38crash(C);
  223. }
  224. /*FI*/}
  225. void rT38make(T38 *C){
  226. C->_output_stream=stdout;
  227. }
  228. void rT283address_of(T283 *C){
  229. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1525);
  230. rT40put_string((T40*)oRBC27cpp,XrT67to_string((C)->_name));
  231. rT40put_character((T40*)oRBC27cpp,'\51');
  232. }
  233. void rT283compute_use_current(T283 *C){
  234. C->_use_current_state=1018;
  235. }
  236. void rT283error(/*C*/T0 * a1,T0* a2){
  237. /*UT*/(T45*)oRBC27eh;
  238. rT45add_position(a1);
  239. rT45error((T45*)oRBC27eh,a2);
  240. }
  241. void rT283add_clients(T283 *C,T0 * a1){
  242. int _i=0;
  243. /*IF*/if (!((C)->_actuals_clients)) {
  244. C->_actuals_clients=ma(263,0,1,a1);
  245. }
  246. else {
  247. _i=((T263*)(C)->_actuals_clients)->_lower;
  248. while (!(((_i)>(((T263*)(C)->_actuals_clients)->_upper))||(((T0 *)rT263item((T263*)(C)->_actuals_clients,_i))==((T0 *)a1)))) {
  249. _i=(_i)+(1);
  250. }
  251. /*IF*/if ((_i)>(((T263*)(C)->_actuals_clients)->_upper)) {
  252. rT263add_last((T263*)(C)->_actuals_clients,a1);
  253. }
  254. /*FI*/}
  255. /*FI*/}
  256. T0 * rT283clients(T283 *C){
  257. T0 * R=NULL;
  258. T0 * _bfbc=NULL;
  259. T0 * _bc=NULL;
  260. _bc=XrT58base_class((C)->_current_type);
  261. _bfbc=((T256*)(C)->_base_feature)->_base_class;
  262. /*IF*/if (((T0 *)_bc)==((T0 *)_bfbc)) {
  263. R=((T256*)(C)->_base_feature)->_clients;
  264. }
  265. else {
  266. /*IF*/if (!(rT50is_subclass_of((T50*)_bc,_bfbc))) {
  267. /*UT*/(T45*)oRBC27eh;
  268. rT45add_position(XrT67start_position((C)->_name));
  269. /*UT*/(T45*)oRBC27eh;
  270. rT45add_position(rT256start_position((T256*)(C)->_base_feature));
  271. /*UT*/(T45*)oRBC27eh;
  272. rT45append(((T48*)((T50*)_bc)->_base_class_name)->_to_string);
  273. /*UT*/(T45*)oRBC27eh;
  274. rT45append((T0 *)ms1122);
  275. /*UT*/(T45*)oRBC27eh;
  276. rT45append(((T48*)((T50*)_bfbc)->_base_class_name)->_to_string);
  277. rT283error(NULL,(T0 *)ms1123);
  278. }
  279. /*FI*/R=rT50clients_for((T50*)_bc,(C)->_name,(C)->_base_feature);
  280. }
  281. /*FI*/return R;
  282. }
  283. int rT283id(T283 *C){
  284. int R=0;
  285. R=XrT58id((C)->_current_type);
  286. return R;
  287. }
  288. T0 * rT283start_position(T283 *C){
  289. T0 * R=NULL;
  290. R=rT256start_position((T256*)(C)->_base_feature);
  291. return R;
  292. }
  293. int rT283use_current(T283 *C){
  294. int R=0;
  295. {int iv1=(C)->_use_current_state;
  296. if (1018 == iv1) goto l38;
  297. goto l39;
  298.  l38: ;
  299. R=1;
  300. goto l37;
  301.  l39: ;
  302. if (1017 == iv1) goto l40;
  303. goto l41;
  304.  l40: ;
  305. goto l37;
  306.  l41: ;
  307. if (1019 == iv1) goto l42;
  308. goto l43;
  309.  l42: ;
  310. C->_use_current_state=1020;
  311. rT283compute_use_current(C);
  312. R=rT283use_current(C);
  313. goto l37;
  314.  l43: ;
  315. if (1020 == iv1) goto l44;
  316. goto l45;
  317.  l44: ;
  318. R=1;
  319. goto l37;
  320.  l45: ;
  321.  l37: ;
  322. }
  323. return R;
  324. }
  325. int rT283can_be_dropped(T283 *C){
  326. int R=0;
  327. R=(!((C)->_require_assertion))&&(!((C)->_ensure_assertion));
  328. return R;
  329. }
  330. void rT283mapping_c(T283 *C){
  331. /*IF*/if (XrT58fast_mapping_c((C)->_current_type)) {
  332. rT40put_target((T40*)oRBC27cpp);
  333. }
  334. else {
  335. rT40put_character((T40*)oRBC27cpp,'\50');
  336. rT40put_target((T40*)oRBC27cpp);
  337. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1594);
  338. rT40put_string((T40*)oRBC27cpp,XrT67to_string((C)->_name));
  339. }
  340. /*FI*/}
  341. void rT283mapping_name(T283 *C){
  342. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1189);
  343. rT40put_integer((T40*)oRBC27cpp,rT283id(C));
  344. XrT67mapping_c((C)->_name);
  345. }
  346. T0 * rT283run_class(T283 *C){
  347. T0 * R=NULL;
  348. R=XrT58run_class((C)->_current_type);
  349. return R;
  350. }
  351. int rT283is_exported_in(T283 *C,T0 * a1){
  352. int R=0;
  353. R=rT123gives_permission_to((T123*)rT283clients(C),a1);
  354. return R;
  355. }
  356. void rT283copy(T283 *C,T0 * a1){
  357. /*IF*//*AF*//*AE*/
  358. memcpy(C,a1,s[C->id]);
  359. /*FI*/}
  360. int rT283arg_count(T283 *C){
  361. int R=0;
  362. /*IF*/if (((int)(C)->_arguments)) {
  363. R=rT92count((T92*)(C)->_arguments);
  364. }
  365. /*FI*/return R;
  366. }
  367. void rT283initialize(T283 *C){
  368. C->_result_type=XrT58to_runnable(((T256*)(C)->_base_feature)->_result_type,(C)->_current_type);
  369. }
  370. void rT283fall_down(T283 *C){
  371. T0 * _rf=NULL;
  372. T0 * _sub_name=NULL;
  373. T0 * _sub_bc=NULL;
  374. T0 * _current_bc=NULL;
  375. T0 * _sub_rc=NULL;
  376. T0 * _current_rc=NULL;
  377. int _i=0;
  378. T0* _running=NULL;
  379. _current_rc=XrT58run_class((C)->_current_type);
  380. _running=((T260*)_current_rc)->_running;
  381. /*IF*/if (((int)_running)) {
  382. _current_bc=XrT58base_class((C)->_current_type);
  383. _i=((T263*)_running)->_lower;
  384. while (!((_i)>(((T263*)_running)->_upper))) {
  385. _sub_rc=rT263item((T263*)_running,_i);
  386. /*IF*/if (((T0 *)_sub_rc)!=((T0 *)_current_rc)) {
  387. _sub_bc=XrT58base_class(((T260*)_sub_rc)->_current_type);
  388. _sub_name=rT50name_of((T50*)_sub_bc,_current_bc,(C)->_name);
  389. _rf=rT260get_feature((T260*)_sub_rc,_sub_name);
  390. }
  391. /*FI*/_i=(_i)+(1);
  392. }
  393. }
  394. /*FI*/}
  395. void rT283make(T283 *C,T0 * a1,T0 * a2,T0 * a3){
  396. C->_current_type=a1;
  397. C->_name=a2;
  398. C->_base_feature=a3;
  399. rT264put((T264*)((T260*)rT283run_class(C))->_feature_dictionary,(T0 *)C,XrT67to_key((C)->_name));
  400. rT52incr_magic_count((T52*)oRBC27small_eiffel);
  401. C->_use_current_state=1019;
  402. rT52push((T52*)oRBC27small_eiffel,(T0 *)C);
  403. rT283initialize(C);
  404. rT52pop((T52*)oRBC27small_eiffel);
  405. }
  406. void rT282address_of(T282 *C){
  407. rT282mapping_name(C);
  408. }
  409. void rT282warning(/*C*/T0 * a1,T0* a2){
  410. /*UT*/(T45*)oRBC27eh;
  411. rT45add_position(a1);
  412. rT45warning((T45*)oRBC27eh,a2);
  413. }
  414. void rT282once_flag(T282 *C){
  415. rT40put_character((T40*)oRBC27cpp,'o');
  416. rT40put_character((T40*)oRBC27cpp,'f');
  417. rT254mapping_c_name((T254*)(C)->_base_feature);
  418. }
  419. void rT282once_boolean(T282 *C){
  420. rT40swap_on_h((T40*)oRBC27cpp);
  421. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1527);
  422. rT282once_flag(C);
  423. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1528);
  424. rT40swap_on_c((T40*)oRBC27cpp);
  425. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1529);
  426. rT282once_flag(C);
  427. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1530);
  428. }
  429. void rT282compute_use_current(T282 *C){
  430. rT282std_compute_use_current(C);
  431. }
  432. void rT282define_closing(T282 *C){
  433. /*IF*/if (rT44ensure_check((T44*)oRBC27eiffel_run_control)) {
  434. /*IF*/if (((int)(C)->_ensure_assertion)) {
  435. rT157compile_to_c((T157*)(C)->_ensure_assertion);
  436. }
  437. /*FI*/}
  438. /*FI*//*IF*/if (rT44no_check((T44*)oRBC27eiffel_run_control)) {
  439. rT40rs_unlink((T40*)oRBC27cpp);
  440. }
  441. /*FI*/}
  442. T0*oRBC261dos;
  443. void rT282define_opening(T282 *C){
  444. T0 * _t=NULL;
  445. int _i=0;
  446. /*IF*/if (((int)(C)->_result_type)) {
  447. _t=XrT58run_type((C)->_result_type);
  448. /*(IRF3*/(((T7*)oRBC261dos)->_count)=(0);
  449. /*)*/XrT58c_type_in(_t,oRBC261dos);
  450. rT40put_string((T40*)oRBC27cpp,oRBC261dos);
  451. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1365);
  452. XrT58c_initialize(_t);
  453. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1367);
  454. }
  455. /*FI*//*IF*/if (((int)(C)->_local_vars)) {
  456. rT139compile_to_c((T139*)(C)->_local_vars);
  457. }
  458. /*FI*//*IF*/if (rT44ensure_check((T44*)oRBC27eiffel_run_control)) {
  459. /*IF*/if (((int)(C)->_ensure_assertion)) {
  460. rT157compile_to_c_old((T157*)(C)->_ensure_assertion);
  461. }
  462. /*FI*/}
  463. /*FI*//*IF*/if (((int)(C)->_local_vars)) {
  464. rT139initialize_expanded((T139*)(C)->_local_vars);
  465. }
  466. /*FI*//*IF*/if (rT44no_check((T44*)oRBC27eiffel_run_control)) {
  467. rT40rs_link((T40*)oRBC27cpp,(T0 *)C);
  468. /*IF*/if (rT282use_current(C)) {
  469. rT40rs_push_current((T40*)oRBC27cpp,(C)->_current_type);
  470. }
  471. /*FI*/_i=1;
  472. while (!((_i)>(rT282arg_count(C)))) {
  473. _t=XrT58run_type(rT92type((T92*)(C)->_arguments,_i));
  474. rT40rs_push_argument((T40*)oRBC27cpp,XrT49to_string(rT92name((T92*)(C)->_arguments,_i)),_i,_t);
  475. _i=(_i)+(1);
  476. }
  477. /*IF*/if (((int)(C)->_result_type)) {
  478. rT40rs_push_result((T40*)oRBC27cpp,XrT58run_type((C)->_result_type));
  479. }
  480. /*FI*//*IF*/if (((int)(C)->_local_vars)) {
  481. _i=1;
  482. while (!((_i)>(rT139count((T139*)(C)->_local_vars)))) {
  483. _t=XrT58run_type(rT139type((T139*)(C)->_local_vars,_i));
  484. rT40rs_push_local((T40*)oRBC27cpp,XrT49to_string(rT139name((T139*)(C)->_local_vars,_i)),_t);
  485. _i=(_i)+(1);
  486. }
  487. }
  488. /*FI*/}
  489. /*FI*//*IF*/if (rT44require_check((T44*)oRBC27eiffel_run_control)) {
  490. /*IF*/if (((int)(C)->_require_assertion)) {
  491. rT267compile_to_c((T267*)(C)->_require_assertion);
  492. }
  493. /*FI*/}
  494. /*FI*/}
  495. void rT282define_prototype(T282 *C){
  496. int _mem_id=0;
  497. T0 * _t=NULL;
  498. T0 * _fn=NULL;
  499. _mem_id=rT282id(C);
  500. /*IF*/if (rT44no_check((T44*)oRBC27eiffel_run_control)) {
  501. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1352);
  502. rT40put_integer((T40*)oRBC27cpp,_mem_id);
  503. XrT67mapping_c((C)->_name);
  504. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1353);
  505. _fn=rT254first_name((T254*)(C)->_base_feature);
  506. /*IF*/if (XrT67is_infix_name(_fn)) {
  507. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1354);
  508. }
  509.  else if (XrT67is_prefix_name(_fn)) {
  510. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1355);
  511. }
  512. /*FI*/rT40put_string((T40*)oRBC27cpp,XrT67to_string(_fn));
  513. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1356);
  514. rT40put_string((T40*)oRBC27cpp,((T48*)rT254base_class_name((T254*)(C)->_base_feature))->_to_string);
  515. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1357);
  516. rT40swap_on_h((T40*)oRBC27cpp);
  517. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1358);
  518. rT40put_integer((T40*)oRBC27cpp,_mem_id);
  519. XrT67mapping_c((C)->_name);
  520. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1359);
  521. }
  522. /*FI*//*(IRF3*/(((T7*)oRBC261dps)->_count)=(0);
  523. /*)*//*IF*/if (!((C)->_result_type)) {
  524. rT7append((T7*)oRBC261dps,(T0 *)ms1360);
  525. }
  526. else {
  527. _t=XrT58run_type((C)->_result_type);
  528. XrT58c_type_in(_t,oRBC261dps);
  529. rT7extend((T7*)oRBC261dps,'\40');
  530. }
  531. /*FI*/rT7append((T7*)oRBC261dps,(T0 *)ms1361);
  532. rT2append_in(_mem_id,oRBC261dps);
  533. XrT67mapping_c_in((C)->_name,oRBC261dps);
  534. rT7extend((T7*)oRBC261dps,'\50');
  535. /*IF*/if (rT282use_current(C)) {
  536. rT7extend((T7*)oRBC261dps,'T');
  537. rT2append_in(_mem_id,oRBC261dps);
  538. rT7extend((T7*)oRBC261dps,'\40');
  539. /*IF*/if (!(XrT58fast_mapping_c((C)->_current_type))) {
  540. rT7extend((T7*)oRBC261dps,'\52');
  541. }
  542. /*FI*/rT7extend((T7*)oRBC261dps,'C');
  543. /*IF*/if (((int)(C)->_arguments)) {
  544. rT7extend((T7*)oRBC261dps,'\54');
  545. }
  546. /*FI*/}
  547. else {
  548. rT7append((T7*)oRBC261dps,(T0 *)ms1362);
  549. }
  550. /*FI*//*IF*/if (!((C)->_arguments)) {
  551. /*IF*/if (!(rT282use_current(C))) {
  552. rT7append((T7*)oRBC261dps,(T0 *)ms1363);
  553. }
  554. /*FI*/}
  555. else {
  556. rT92compile_to_c_in((T92*)(C)->_arguments,oRBC261dps);
  557. }
  558. /*FI*/rT7extend((T7*)oRBC261dps,'\51');
  559. rT40put_c_heading((T40*)oRBC27cpp,oRBC261dps);
  560. rT40swap_on_c((T40*)oRBC27cpp);
  561. }
  562. T0*oRBC261dps;
  563. void rT282error(/*C*/T0 * a1,T0* a2){
  564. /*UT*/(T45*)oRBC27eh;
  565. rT45add_position(a1);
  566. rT45error((T45*)oRBC27eh,a2);
  567. }
  568. void rT282add_clients(T282 *C,T0 * a1){
  569. int _i=0;
  570. /*IF*/if (!((C)->_actuals_clients)) {
  571. C->_actuals_clients=ma(263,0,1,a1);
  572. }
  573. else {
  574. _i=((T263*)(C)->_actuals_clients)->_lower;
  575. while (!(((_i)>(((T263*)(C)->_actuals_clients)->_upper))||(((T0 *)rT263item((T263*)(C)->_actuals_clients,_i))==((T0 *)a1)))) {
  576. _i=(_i)+(1);
  577. }
  578. /*IF*/if ((_i)>(((T263*)(C)->_actuals_clients)->_upper)) {
  579. rT263add_last((T263*)(C)->_actuals_clients,a1);
  580. }
  581. /*FI*/}
  582. /*FI*/}
  583. T0 * rT282clients(T282 *C){
  584. T0 * R=NULL;
  585. T0 * _bfbc=NULL;
  586. T0 * _bc=NULL;
  587. _bc=XrT58base_class((C)->_current_type);
  588. _bfbc=((T254*)(C)->_base_feature)->_base_class;
  589. /*IF*/if (((T0 *)_bc)==((T0 *)_bfbc)) {
  590. R=((T254*)(C)->_base_feature)->_clients;
  591. }
  592. else {
  593. /*IF*/if (!(rT50is_subclass_of((T50*)_bc,_bfbc))) {
  594. /*UT*/(T45*)oRBC27eh;
  595. rT45add_position(XrT67start_position((C)->_name));
  596. /*UT*/(T45*)oRBC27eh;
  597. rT45add_position(rT254start_position((T254*)(C)->_base_feature));
  598. /*UT*/(T45*)oRBC27eh;
  599. rT45append(((T48*)((T50*)_bc)->_base_class_name)->_to_string);
  600. /*UT*/(T45*)oRBC27eh;
  601. rT45append((T0 *)ms1122);
  602. /*UT*/(T45*)oRBC27eh;
  603. rT45append(((T48*)((T50*)_bfbc)->_base_class_name)->_to_string);
  604. rT282error(NULL,(T0 *)ms1123);
  605. }
  606. /*FI*/R=rT50clients_for((T50*)_bc,(C)->_name,(C)->_base_feature);
  607. }
  608. /*FI*/return R;
  609. }
  610. void rT282std_compute_use_current(T282 *C){
  611. /*IF*/if (((C)->_use_current_state)==(1020)) {
  612. /*IF*/if (((int)(C)->_require_assertion)) {
  613. /*IF*/if (rT267use_current((T267*)(C)->_require_assertion)) {
  614. C->_use_current_state=1018;
  615. }
  616. /*FI*/}
  617. /*FI*/}
  618. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  619. /*IF*/if (((int)(C)->_routine_body)) {
  620. /*IF*/if (rT140use_current((T140*)(C)->_routine_body)) {
  621. C->_use_current_state=1018;
  622. }
  623. /*FI*/}
  624. /*FI*/}
  625. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  626. /*IF*/if (((int)(C)->_ensure_assertion)) {
  627. /*IF*/if (rT157use_current((T157*)(C)->_ensure_assertion)) {
  628. C->_use_current_state=1018;
  629. }
  630. /*FI*/}
  631. /*FI*/}
  632. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  633. C->_use_current_state=1017;
  634. }
  635. /*FI*/}
  636. int rT282id(T282 *C){
  637. int R=0;
  638. R=XrT58id((C)->_current_type);
  639. return R;
  640. }
  641. T0 * rT282start_position(T282 *C){
  642. T0 * R=NULL;
  643. R=rT254start_position((T254*)(C)->_base_feature);
  644. return R;
  645. }
  646. int rT282use_current(T282 *C){
  647. int R=0;
  648. {int iv1=(C)->_use_current_state;
  649. if (1018 == iv1) goto l47;
  650. goto l48;
  651.  l47: ;
  652. R=1;
  653. goto l46;
  654.  l48: ;
  655. if (1017 == iv1) goto l49;
  656. goto l50;
  657.  l49: ;
  658. goto l46;
  659.  l50: ;
  660. if (1019 == iv1) goto l51;
  661. goto l52;
  662.  l51: ;
  663. C->_use_current_state=1020;
  664. rT282compute_use_current(C);
  665. R=rT282use_current(C);
  666. goto l46;
  667.  l52: ;
  668. if (1020 == iv1) goto l53;
  669. goto l54;
  670.  l53: ;
  671. R=1;
  672. goto l46;
  673.  l54: ;
  674.  l46: ;
  675. }
  676. return R;
  677. }
  678. void rT282c_define(T282 *C){
  679. T0 * _bfbc=NULL;
  680. _bfbc=((T254*)(C)->_base_feature)->_base_class;
  681. /*IF*/if (!(rT50already_defined((T50*)_bfbc,(C)->_name))) {
  682. rT282once_boolean(C);
  683. rT50set_already_defined((T50*)_bfbc,(C)->_name);
  684. }
  685. /*FI*/rT282define_prototype(C);
  686. rT282define_opening(C);
  687. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1531);
  688. rT282once_flag(C);
  689. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1532);
  690. rT282once_flag(C);
  691. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1533);
  692. /*IF*/if (((int)(C)->_routine_body)) {
  693. rT140compile_to_c((T140*)(C)->_routine_body);
  694. }
  695. /*FI*/rT40put_string((T40*)oRBC27cpp,(T0 *)ms1534);
  696. rT282define_closing(C);
  697. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1535);
  698. }
  699. int rT282can_be_dropped(T282 *C){
  700. int R=0;
  701. rT282warning(rT282start_position(C),(T0 *)ms1554);
  702. return R;
  703. }
  704. void rT282mapping_c(T282 *C){
  705. int _tcbd=0;
  706. /*IF*/if (rT282use_current(C)) {
  707. rT282mapping_name(C);
  708. rT40put_character((T40*)oRBC27cpp,'\50');
  709. rT40put_target((T40*)oRBC27cpp);
  710. /*IF*/if ((rT282arg_count(C))>(0)) {
  711. rT40put_character((T40*)oRBC27cpp,'\54');
  712. rT40put_arguments((T40*)oRBC27cpp);
  713. }
  714. /*FI*/rT40put_string((T40*)oRBC27cpp,(T0 *)ms1592);
  715. }
  716. else {
  717. _tcbd=rT40target_cannot_be_dropped((T40*)oRBC27cpp);
  718. rT282mapping_name(C);
  719. rT40put_character((T40*)oRBC27cpp,'\50');
  720. /*IF*/if ((rT282arg_count(C))>(0)) {
  721. rT40put_arguments((T40*)oRBC27cpp);
  722. }
  723. /*FI*/rT40put_string((T40*)oRBC27cpp,(T0 *)ms1593);
  724. }
  725. /*FI*/}
  726. void rT282mapping_name(T282 *C){
  727. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1189);
  728. rT40put_integer((T40*)oRBC27cpp,rT282id(C));
  729. XrT67mapping_c((C)->_name);
  730. }
  731. T0 * rT282run_class(T282 *C){
  732. T0 * R=NULL;
  733. R=XrT58run_class((C)->_current_type);
  734. return R;
  735. }
  736. int rT282is_exported_in(T282 *C,T0 * a1){
  737. int R=0;
  738. R=rT123gives_permission_to((T123*)rT282clients(C),a1);
  739. return R;
  740. }
  741. void rT282copy(T282 *C,T0 * a1){
  742. /*IF*//*AF*//*AE*/
  743. memcpy(C,a1,s[C->id]);
  744. /*FI*/}
  745. int rT282arg_count(T282 *C){
  746. int R=0;
  747. /*IF*/if (((int)(C)->_arguments)) {
  748. R=rT92count((T92*)(C)->_arguments);
  749. }
  750. /*FI*/return R;
  751. }
  752. void rT282initialize(T282 *C){
  753. C->_arguments=((T254*)(C)->_base_feature)->_arguments;
  754. /*IF*/if ((((int)(C)->_arguments))&&((rT92count((T92*)(C)->_arguments))>(0))) {
  755. C->_arguments=rT92to_runnable((T92*)(C)->_arguments,(C)->_current_type);
  756. }
  757. /*FI*/C->_local_vars=((T254*)(C)->_base_feature)->_local_vars;
  758. /*IF*/if ((((int)(C)->_local_vars))&&((rT139count((T139*)(C)->_local_vars))>(0))) {
  759. C->_local_vars=rT139to_runnable((T139*)(C)->_local_vars,(C)->_current_type);
  760. }
  761. /*FI*/C->_routine_body=((T254*)(C)->_base_feature)->_routine_body;
  762. /*IF*/if (((int)(C)->_routine_body)) {
  763. C->_routine_body=rT140to_runnable((T140*)(C)->_routine_body,(C)->_current_type);
  764. }
  765. /*FI*/}
  766. void rT282fall_down(T282 *C){
  767. T0 * _rf=NULL;
  768. T0 * _sub_name=NULL;
  769. T0 * _sub_bc=NULL;
  770. T0 * _current_bc=NULL;
  771. T0 * _sub_rc=NULL;
  772. T0 * _current_rc=NULL;
  773. int _i=0;
  774. T0* _running=NULL;
  775. _current_rc=XrT58run_class((C)->_current_type);
  776. _running=((T260*)_current_rc)->_running;
  777. /*IF*/if (((int)_running)) {
  778. _current_bc=XrT58base_class((C)->_current_type);
  779. _i=((T263*)_running)->_lower;
  780. while (!((_i)>(((T263*)_running)->_upper))) {
  781. _sub_rc=rT263item((T263*)_running,_i);
  782. /*IF*/if (((T0 *)_sub_rc)!=((T0 *)_current_rc)) {
  783. _sub_bc=XrT58base_class(((T260*)_sub_rc)->_current_type);
  784. _sub_name=rT50name_of((T50*)_sub_bc,_current_bc,(C)->_name);
  785. _rf=rT260get_feature((T260*)_sub_rc,_sub_name);
  786. }
  787. /*FI*/_i=(_i)+(1);
  788. }
  789. }
  790. /*FI*/}
  791. void rT282make(T282 *C,T0 * a1,T0 * a2,T0 * a3){
  792. C->_current_type=a1;
  793. C->_name=a2;
  794. C->_base_feature=a3;
  795. rT264put((T264*)((T260*)rT282run_class(C))->_feature_dictionary,(T0 *)C,XrT67to_key((C)->_name));
  796. rT52incr_magic_count((T52*)oRBC27small_eiffel);
  797. C->_use_current_state=1019;
  798. rT52push((T52*)oRBC27small_eiffel,(T0 *)C);
  799. rT282initialize(C);
  800. rT52pop((T52*)oRBC27small_eiffel);
  801. }
  802. void rT281address_of(T281 *C){
  803. rT281mapping_name(C);
  804. }
  805. void rT281warning(/*C*/T0 * a1,T0* a2){
  806. /*UT*/(T45*)oRBC27eh;
  807. rT45add_position(a1);
  808. rT45warning((T45*)oRBC27eh,a2);
  809. }
  810. int rT281is_static(T281 *C){
  811. int R=0;
  812. C->_static_value_mem=-(7);
  813. /*IF*/if (rT281isa_in_line(C)) {
  814. R=((C)->_static_value_mem)!=(-(7));
  815. }
  816. /*FI*/return R;
  817. }
  818. void rT281compute_use_current(T281 *C){
  819. rT281std_compute_use_current(C);
  820. }
  821. int rT281isa_in_line(T281 *C){
  822. int R=0;
  823. T0 * _expression=NULL;
  824. T0 * _a=NULL;
  825. /*IF*/if (rT44boost((T44*)oRBC27eiffel_run_control)) {
  826. /*IF*/if (((rT281arg_count(C))==(0))&&(!((C)->_local_vars))) {
  827. /*IF*/if (!((C)->_routine_body)) {
  828. C->_static_value_mem=0;
  829. R=1;
  830. }
  831.  else if ((rT140count((T140*)(C)->_routine_body))==(1)) {
  832. _a=rT140first((T140*)(C)->_routine_body);
  833. if ((int)_a) switch (((T0 *)_a)->id) {
  834. case 248: 
  835. break;
  836. default:
  837. _a = NULL;
  838. };/*IF*/if (((int)_a)) {
  839. _expression=((T248*)_a)->_left_side;
  840. /*IF*/if (XrT68is_result(_expression)) {
  841. _expression=((T248*)_a)->_right_side;
  842. R=!(XrT68use_current(_expression));
  843. /*IF*/if (R) {
  844. /*IF*/if (XrT68is_static(_expression)) {
  845. C->_static_value_mem=XrT68static_value(_expression);
  846. }
  847. /*FI*/}
  848. /*FI*/}
  849. /*FI*/}
  850. /*FI*/}
  851. /*FI*/}
  852. /*FI*/}
  853. /*FI*/return R;
  854. }
  855. void rT281define_closing(T281 *C){
  856. /*IF*/if (rT44ensure_check((T44*)oRBC27eiffel_run_control)) {
  857. /*IF*/if (((int)(C)->_ensure_assertion)) {
  858. rT157compile_to_c((T157*)(C)->_ensure_assertion);
  859. }
  860. /*FI*/}
  861. /*FI*//*IF*/if (rT44no_check((T44*)oRBC27eiffel_run_control)) {
  862. rT40rs_unlink((T40*)oRBC27cpp);
  863. }
  864. /*FI*/}
  865. void rT281define_opening(T281 *C){
  866. T0 * _t=NULL;
  867. int _i=0;
  868. /*IF*/if (((int)(C)->_result_type)) {
  869. _t=XrT58run_type((C)->_result_type);
  870. /*(IRF3*/(((T7*)oRBC261dos)->_count)=(0);
  871. /*)*/XrT58c_type_in(_t,oRBC261dos);
  872. rT40put_string((T40*)oRBC27cpp,oRBC261dos);
  873. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1365);
  874. XrT58c_initialize(_t);
  875. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1367);
  876. }
  877. /*FI*//*IF*/if (((int)(C)->_local_vars)) {
  878. rT139compile_to_c((T139*)(C)->_local_vars);
  879. }
  880. /*FI*//*IF*/if (rT44ensure_check((T44*)oRBC27eiffel_run_control)) {
  881. /*IF*/if (((int)(C)->_ensure_assertion)) {
  882. rT157compile_to_c_old((T157*)(C)->_ensure_assertion);
  883. }
  884. /*FI*/}
  885. /*FI*//*IF*/if (((int)(C)->_local_vars)) {
  886. rT139initialize_expanded((T139*)(C)->_local_vars);
  887. }
  888. /*FI*//*IF*/if (rT44no_check((T44*)oRBC27eiffel_run_control)) {
  889. rT40rs_link((T40*)oRBC27cpp,(T0 *)C);
  890. /*IF*/if (rT281use_current(C)) {
  891. rT40rs_push_current((T40*)oRBC27cpp,(C)->_current_type);
  892. }
  893. /*FI*/_i=1;
  894. while (!((_i)>(rT281arg_count(C)))) {
  895. _t=XrT58run_type(rT92type((T92*)(C)->_arguments,_i));
  896. rT40rs_push_argument((T40*)oRBC27cpp,XrT49to_string(rT92name((T92*)(C)->_arguments,_i)),_i,_t);
  897. _i=(_i)+(1);
  898. }
  899. /*IF*/if (((int)(C)->_result_type)) {
  900. rT40rs_push_result((T40*)oRBC27cpp,XrT58run_type((C)->_result_type));
  901. }
  902. /*FI*//*IF*/if (((int)(C)->_local_vars)) {
  903. _i=1;
  904. while (!((_i)>(rT139count((T139*)(C)->_local_vars)))) {
  905. _t=XrT58run_type(rT139type((T139*)(C)->_local_vars,_i));
  906. rT40rs_push_local((T40*)oRBC27cpp,XrT49to_string(rT139name((T139*)(C)->_local_vars,_i)),_t);
  907. _i=(_i)+(1);
  908. }
  909. }
  910. /*FI*/}
  911. /*FI*//*IF*/if (rT44require_check((T44*)oRBC27eiffel_run_control)) {
  912. /*IF*/if (((int)(C)->_require_assertion)) {
  913. rT267compile_to_c((T267*)(C)->_require_assertion);
  914. }
  915. /*FI*/}
  916. /*FI*/}
  917. void rT281define_prototype(T281 *C){
  918. int _mem_id=0;
  919. T0 * _t=NULL;
  920. T0 * _fn=NULL;
  921. _mem_id=rT281id(C);
  922. /*IF*/if (rT44no_check((T44*)oRBC27eiffel_run_control)) {
  923. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1352);
  924. rT40put_integer((T40*)oRBC27cpp,_mem_id);
  925. XrT67mapping_c((C)->_name);
  926. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1353);
  927. _fn=rT252first_name((T252*)(C)->_base_feature);
  928. /*IF*/if (XrT67is_infix_name(_fn)) {
  929. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1354);
  930. }
  931.  else if (XrT67is_prefix_name(_fn)) {
  932. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1355);
  933. }
  934. /*FI*/rT40put_string((T40*)oRBC27cpp,XrT67to_string(_fn));
  935. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1356);
  936. rT40put_string((T40*)oRBC27cpp,((T48*)rT252base_class_name((T252*)(C)->_base_feature))->_to_string);
  937. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1357);
  938. rT40swap_on_h((T40*)oRBC27cpp);
  939. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1358);
  940. rT40put_integer((T40*)oRBC27cpp,_mem_id);
  941. XrT67mapping_c((C)->_name);
  942. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1359);
  943. }
  944. /*FI*//*(IRF3*/(((T7*)oRBC261dps)->_count)=(0);
  945. /*)*//*IF*/if (!((C)->_result_type)) {
  946. rT7append((T7*)oRBC261dps,(T0 *)ms1360);
  947. }
  948. else {
  949. _t=XrT58run_type((C)->_result_type);
  950. XrT58c_type_in(_t,oRBC261dps);
  951. rT7extend((T7*)oRBC261dps,'\40');
  952. }
  953. /*FI*/rT7append((T7*)oRBC261dps,(T0 *)ms1361);
  954. rT2append_in(_mem_id,oRBC261dps);
  955. XrT67mapping_c_in((C)->_name,oRBC261dps);
  956. rT7extend((T7*)oRBC261dps,'\50');
  957. /*IF*/if (rT281use_current(C)) {
  958. rT7extend((T7*)oRBC261dps,'T');
  959. rT2append_in(_mem_id,oRBC261dps);
  960. rT7extend((T7*)oRBC261dps,'\40');
  961. /*IF*/if (!(XrT58fast_mapping_c((C)->_current_type))) {
  962. rT7extend((T7*)oRBC261dps,'\52');
  963. }
  964. /*FI*/rT7extend((T7*)oRBC261dps,'C');
  965. /*IF*/if (((int)(C)->_arguments)) {
  966. rT7extend((T7*)oRBC261dps,'\54');
  967. }
  968. /*FI*/}
  969. else {
  970. rT7append((T7*)oRBC261dps,(T0 *)ms1362);
  971. }
  972. /*FI*//*IF*/if (!((C)->_arguments)) {
  973. /*IF*/if (!(rT281use_current(C))) {
  974. rT7append((T7*)oRBC261dps,(T0 *)ms1363);
  975. }
  976. /*FI*/}
  977. else {
  978. rT92compile_to_c_in((T92*)(C)->_arguments,oRBC261dps);
  979. }
  980. /*FI*/rT7extend((T7*)oRBC261dps,'\51');
  981. rT40put_c_heading((T40*)oRBC27cpp,oRBC261dps);
  982. rT40swap_on_c((T40*)oRBC27cpp);
  983. }
  984. void rT281error(/*C*/T0 * a1,T0* a2){
  985. /*UT*/(T45*)oRBC27eh;
  986. rT45add_position(a1);
  987. rT45error((T45*)oRBC27eh,a2);
  988. }
  989. void rT281in_line(T281 *C){
  990. int _tcbd=0;
  991. T0 * _e=NULL;
  992. T0 * _a=NULL;
  993. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1589);
  994. _tcbd=rT40target_cannot_be_dropped((T40*)oRBC27cpp);
  995. /*IF*/if (!((C)->_routine_body)) {
  996. XrT58c_initialize(XrT58run_type((C)->_result_type));
  997. }
  998. else {
  999. _a=rT140first((T140*)(C)->_routine_body);
  1000. if ((int)_a) switch (((T0 *)_a)->id) {
  1001. case 248: 
  1002. break;
  1003. default:
  1004. _a = NULL;
  1005. };_e=((T248*)_a)->_right_side;
  1006. /*IF*/if (XrT68is_manifest_string(_e)) {
  1007. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1590);
  1008. }
  1009. /*FI*/XrT68compile_to_c(_e);
  1010. }
  1011. /*FI*/rT40put_string((T40*)oRBC27cpp,(T0 *)ms1591);
  1012. /*IF*/if (_tcbd) {
  1013. rT40put_character((T40*)oRBC27cpp,'\51');
  1014. }
  1015. /*FI*/}
  1016. void rT281add_clients(T281 *C,T0 * a1){
  1017. int _i=0;
  1018. /*IF*/if (!((C)->_actuals_clients)) {
  1019. C->_actuals_clients=ma(263,0,1,a1);
  1020. }
  1021. else {
  1022. _i=((T263*)(C)->_actuals_clients)->_lower;
  1023. while (!(((_i)>(((T263*)(C)->_actuals_clients)->_upper))||(((T0 *)rT263item((T263*)(C)->_actuals_clients,_i))==((T0 *)a1)))) {
  1024. _i=(_i)+(1);
  1025. }
  1026. /*IF*/if ((_i)>(((T263*)(C)->_actuals_clients)->_upper)) {
  1027. rT263add_last((T263*)(C)->_actuals_clients,a1);
  1028. }
  1029. /*FI*/}
  1030. /*FI*/}
  1031. T0 * rT281clients(T281 *C){
  1032. T0 * R=NULL;
  1033. T0 * _bfbc=NULL;
  1034. T0 * _bc=NULL;
  1035. _bc=XrT58base_class((C)->_current_type);
  1036. _bfbc=((T252*)(C)->_base_feature)->_base_class;
  1037. /*IF*/if (((T0 *)_bc)==((T0 *)_bfbc)) {
  1038. R=((T252*)(C)->_base_feature)->_clients;
  1039. }
  1040. else {
  1041. /*IF*/if (!(rT50is_subclass_of((T50*)_bc,_bfbc))) {
  1042. /*UT*/(T45*)oRBC27eh;
  1043. rT45add_position(XrT67start_position((C)->_name));
  1044. /*UT*/(T45*)oRBC27eh;
  1045. rT45add_position(rT252start_position((T252*)(C)->_base_feature));
  1046. /*UT*/(T45*)oRBC27eh;
  1047. rT45append(((T48*)((T50*)_bc)->_base_class_name)->_to_string);
  1048. /*UT*/(T45*)oRBC27eh;
  1049. rT45append((T0 *)ms1122);
  1050. /*UT*/(T45*)oRBC27eh;
  1051. rT45append(((T48*)((T50*)_bfbc)->_base_class_name)->_to_string);
  1052. rT281error(NULL,(T0 *)ms1123);
  1053. }
  1054. /*FI*/R=rT50clients_for((T50*)_bc,(C)->_name,(C)->_base_feature);
  1055. }
  1056. /*FI*/return R;
  1057. }
  1058. void rT281std_compute_use_current(T281 *C){
  1059. /*IF*/if (((C)->_use_current_state)==(1020)) {
  1060. /*IF*/if (((int)(C)->_require_assertion)) {
  1061. /*IF*/if (rT267use_current((T267*)(C)->_require_assertion)) {
  1062. C->_use_current_state=1018;
  1063. }
  1064. /*FI*/}
  1065. /*FI*/}
  1066. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  1067. /*IF*/if (((int)(C)->_routine_body)) {
  1068. /*IF*/if (rT140use_current((T140*)(C)->_routine_body)) {
  1069. C->_use_current_state=1018;
  1070. }
  1071. /*FI*/}
  1072. /*FI*/}
  1073. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  1074. /*IF*/if (((int)(C)->_ensure_assertion)) {
  1075. /*IF*/if (rT157use_current((T157*)(C)->_ensure_assertion)) {
  1076. C->_use_current_state=1018;
  1077. }
  1078. /*FI*/}
  1079. /*FI*/}
  1080. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  1081. C->_use_current_state=1017;
  1082. }
  1083. /*FI*/}
  1084. int rT281id(T281 *C){
  1085. int R=0;
  1086. R=XrT58id((C)->_current_type);
  1087. return R;
  1088. }
  1089. T0 * rT281start_position(T281 *C){
  1090. T0 * R=NULL;
  1091. R=rT252start_position((T252*)(C)->_base_feature);
  1092. return R;
  1093. }
  1094. int rT281use_current(T281 *C){
  1095. int R=0;
  1096. {int iv1=(C)->_use_current_state;
  1097. if (1018 == iv1) goto l56;
  1098. goto l57;
  1099.  l56: ;
  1100. R=1;
  1101. goto l55;
  1102.  l57: ;
  1103. if (1017 == iv1) goto l58;
  1104. goto l59;
  1105.  l58: ;
  1106. goto l55;
  1107.  l59: ;
  1108. if (1019 == iv1) goto l60;
  1109. goto l61;
  1110.  l60: ;
  1111. C->_use_current_state=1020;
  1112. rT281compute_use_current(C);
  1113. R=rT281use_current(C);
  1114. goto l55;
  1115.  l61: ;
  1116. if (1020 == iv1) goto l62;
  1117. goto l63;
  1118.  l62: ;
  1119. R=1;
  1120. goto l55;
  1121.  l63: ;
  1122.  l55: ;
  1123. }
  1124. return R;
  1125. }
  1126. void rT281c_define(T281 *C){
  1127. /*IF*/if (rT281isa_in_line(C)) {
  1128. rT40incr_inlined_function_count((T40*)oRBC27cpp);
  1129. }
  1130. else {
  1131. /*IF*/if (rT281use_current(C)) {
  1132. rT40incr_function_count((T40*)oRBC27cpp);
  1133. }
  1134. else {
  1135. rT40incr_real_function_count((T40*)oRBC27cpp);
  1136. }
  1137. /*FI*/rT281define_prototype(C);
  1138. rT281define_opening(C);
  1139. /*IF*/if (((int)(C)->_routine_body)) {
  1140. rT140compile_to_c((T140*)(C)->_routine_body);
  1141. }
  1142. /*FI*/rT281define_closing(C);
  1143. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1526);
  1144. }
  1145. /*FI*/}
  1146. int rT281can_be_dropped(T281 *C){
  1147. int R=0;
  1148. R=((((!((C)->_arguments))&&(!((C)->_local_vars)))&&(!((C)->_require_assertion)))&&(!((C)->_ensure_assertion)))&&(!((C)->_rescue_compound));
  1149. /*IF*/if (R) {
  1150. /*IF*/if (((int)(C)->_routine_body)) {
  1151. /*IF*/if ((rT140count((T140*)(C)->_routine_body))==(1)) {
  1152. R=0;
  1153. rT281warning(rT281start_position(C),(T0 *)ms1553);
  1154. }
  1155. else {
  1156. R=0;
  1157. }
  1158. /*FI*/}
  1159. /*FI*/}
  1160. /*FI*/return R;
  1161. }
  1162. void rT281mapping_c(T281 *C){
  1163. int _tcbd=0;
  1164. /*IF*/if (rT281isa_in_line(C)) {
  1165. rT281in_line(C);
  1166. }
  1167.  else if (rT281use_current(C)) {
  1168. rT281mapping_name(C);
  1169. rT40put_character((T40*)oRBC27cpp,'\50');
  1170. rT40put_target((T40*)oRBC27cpp);
  1171. /*IF*/if ((rT281arg_count(C))>(0)) {
  1172. rT40put_character((T40*)oRBC27cpp,'\54');
  1173. rT40put_arguments((T40*)oRBC27cpp);
  1174. }
  1175. /*FI*/rT40put_character((T40*)oRBC27cpp,'\51');
  1176. }
  1177. else {
  1178. _tcbd=rT40target_cannot_be_dropped((T40*)oRBC27cpp);
  1179. rT281mapping_name(C);
  1180. rT40put_character((T40*)oRBC27cpp,'\50');
  1181. /*IF*/if ((rT281arg_count(C))>(0)) {
  1182. rT40put_arguments((T40*)oRBC27cpp);
  1183. }
  1184. /*FI*/rT40put_character((T40*)oRBC27cpp,'\51');
  1185. /*IF*/if (_tcbd) {
  1186. rT40put_character((T40*)oRBC27cpp,'\51');
  1187. }
  1188. /*FI*/}
  1189. /*FI*/}
  1190. void rT281mapping_name(T281 *C){
  1191. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1189);
  1192. rT40put_integer((T40*)oRBC27cpp,rT281id(C));
  1193. XrT67mapping_c((C)->_name);
  1194. }
  1195. T0 * rT281run_class(T281 *C){
  1196. T0 * R=NULL;
  1197. R=XrT58run_class((C)->_current_type);
  1198. return R;
  1199. }
  1200. int rT281is_exported_in(T281 *C,T0 * a1){
  1201. int R=0;
  1202. R=rT123gives_permission_to((T123*)rT281clients(C),a1);
  1203. return R;
  1204. }
  1205. void rT281copy(T281 *C,T0 * a1){
  1206. /*IF*//*AF*//*AE*/
  1207. memcpy(C,a1,s[C->id]);
  1208. /*FI*/}
  1209. int rT281arg_count(T281 *C){
  1210. int R=0;
  1211. /*IF*/if (((int)(C)->_arguments)) {
  1212. R=rT92count((T92*)(C)->_arguments);
  1213. }
  1214. /*FI*/return R;
  1215. }
  1216. void rT281initialize(T281 *C){
  1217. C->_arguments=((T252*)(C)->_base_feature)->_arguments;
  1218. /*IF*/if ((((int)(C)->_arguments))&&((rT92count((T92*)(C)->_arguments))>(0))) {
  1219. C->_arguments=rT92to_runnable((T92*)(C)->_arguments,(C)->_current_type);
  1220. }
  1221. /*FI*/C->_result_type=XrT58to_runnable(((T252*)(C)->_base_feature)->_result_type,(C)->_current_type);
  1222. C->_local_vars=((T252*)(C)->_base_feature)->_local_vars;
  1223. /*IF*/if ((((int)(C)->_local_vars))&&((rT139count((T139*)(C)->_local_vars))>(0))) {
  1224. C->_local_vars=rT139to_runnable((T139*)(C)->_local_vars,(C)->_current_type);
  1225. }
  1226. /*FI*/C->_routine_body=((T252*)(C)->_base_feature)->_routine_body;
  1227. /*IF*/if (((int)(C)->_routine_body)) {
  1228. C->_routine_body=rT140to_runnable((T140*)(C)->_routine_body,(C)->_current_type);
  1229. }
  1230. /*FI*//*IF*/if (rT44require_check((T44*)oRBC27eiffel_run_control)) {
  1231. C->_require_assertion=rT252run_require((T252*)(C)->_base_feature,(T0 *)C);
  1232. }
  1233. /*FI*//*IF*/if (rT44ensure_check((T44*)oRBC27eiffel_run_control)) {
  1234. C->_ensure_assertion=rT252run_ensure((T252*)(C)->_base_feature,(T0 *)C);
  1235. }
  1236. /*FI*/}
  1237. void rT281fall_down(T281 *C){
  1238. T0 * _rf=NULL;
  1239. T0 * _sub_name=NULL;
  1240. T0 * _sub_bc=NULL;
  1241. T0 * _current_bc=NULL;
  1242. T0 * _sub_rc=NULL;
  1243. T0 * _current_rc=NULL;
  1244. int _i=0;
  1245. T0* _running=NULL;
  1246. _current_rc=XrT58run_class((C)->_current_type);
  1247. _running=((T260*)_current_rc)->_running;
  1248. /*IF*/if (((int)_running)) {
  1249. _current_bc=XrT58base_class((C)->_current_type);
  1250. _i=((T263*)_running)->_lower;
  1251. while (!((_i)>(((T263*)_running)->_upper))) {
  1252. _sub_rc=rT263item((T263*)_running,_i);
  1253. /*IF*/if (((T0 *)_sub_rc)!=((T0 *)_current_rc)) {
  1254. _sub_bc=XrT58base_class(((T260*)_sub_rc)->_current_type);
  1255. _sub_name=rT50name_of((T50*)_sub_bc,_current_bc,(C)->_name);
  1256. _rf=rT260get_feature((T260*)_sub_rc,_sub_name);
  1257. }
  1258. /*FI*/_i=(_i)+(1);
  1259. }
  1260. }
  1261. /*FI*/}
  1262. void rT281make(T281 *C,T0 * a1,T0 * a2,T0 * a3){
  1263. C->_current_type=a1;
  1264. C->_name=a2;
  1265. C->_base_feature=a3;
  1266. rT264put((T264*)((T260*)rT281run_class(C))->_feature_dictionary,(T0 *)C,XrT67to_key((C)->_name));
  1267. rT52incr_magic_count((T52*)oRBC27small_eiffel);
  1268. C->_use_current_state=1019;
  1269. rT52push((T52*)oRBC27small_eiffel,(T0 *)C);
  1270. rT281initialize(C);
  1271. rT52pop((T52*)oRBC27small_eiffel);
  1272. }
  1273. void rT280address_of(T280 *C){
  1274. rT280mapping_name(C);
  1275. }
  1276. T0* rT280to_c_numeric_operator(/*C*/T0* a1){
  1277. T0* R=NULL;
  1278. /*IF*/if (rT7is_equal(ms1561,a1)) {
  1279. R=(T0 *)ms1562;
  1280. }
  1281.  else if (rT7is_equal(ms1563,a1)) {
  1282. R=(T0 *)ms97;
  1283. }
  1284. else {
  1285. R=a1;
  1286. }
  1287. /*FI*/return R;
  1288. }
  1289. T0* rT280to_c_logical_operator(/*C*/T0* a1){
  1290. T0* R=NULL;
  1291. /*IF*/if (rT7is_equal((T7*)(T0 *)ms84,a1)) {
  1292. R=(T0 *)ms1575;
  1293. }
  1294.  else if (rT7is_equal((T7*)(T0 *)ms108,a1)) {
  1295. R=(T0 *)ms1576;
  1296. }
  1297.  else if (rT7is_equal((T7*)(T0 *)ms106,a1)) {
  1298. R=(T0 *)ms1577;
  1299. }
  1300.  else if (rT7is_equal((T7*)(T0 *)ms105,a1)) {
  1301. R=(T0 *)ms1578;
  1302. }
  1303.  else if (rT7is_equal((T7*)(T0 *)ms103,a1)) {
  1304. R=(T0 *)ms1579;
  1305. }
  1306. else {
  1307. R=a1;
  1308. }
  1309. /*FI*/return R;
  1310. }
  1311. T0 * rT280clients(T280 *C){
  1312. T0 * R=NULL;
  1313. T0 * _bfbc=NULL;
  1314. T0 * _bc=NULL;
  1315. _bc=XrT58base_class((C)->_current_type);
  1316. _bfbc=((T212*)(C)->_base_feature)->_base_class;
  1317. /*IF*/if (((T0 *)_bc)==((T0 *)_bfbc)) {
  1318. R=((T212*)(C)->_base_feature)->_clients;
  1319. }
  1320. else {
  1321. /*IF*/if (!(rT50is_subclass_of((T50*)_bc,_bfbc))) {
  1322. /*UT*/(T45*)oRBC27eh;
  1323. rT45add_position(XrT67start_position((C)->_name));
  1324. /*UT*/(T45*)oRBC27eh;
  1325. rT45add_position(rT212start_position((T212*)(C)->_base_feature));
  1326. /*UT*/(T45*)oRBC27eh;
  1327. rT45append(((T48*)((T50*)_bc)->_base_class_name)->_to_string);
  1328. /*UT*/(T45*)oRBC27eh;
  1329. rT45append((T0 *)ms1122);
  1330. /*UT*/(T45*)oRBC27eh;
  1331. rT45append(((T48*)((T50*)_bfbc)->_base_class_name)->_to_string);
  1332. rT280error(NULL,(T0 *)ms1123);
  1333. }
  1334. /*FI*/R=rT50clients_for((T50*)_bc,(C)->_name,(C)->_base_feature);
  1335. }
  1336. /*FI*/return R;
  1337. }
  1338. int rT280id(T280 *C){
  1339. int R=0;
  1340. R=XrT58id((C)->_current_type);
  1341. return R;
  1342. }
  1343. void rT280std_compute_use_current(T280 *C){
  1344. /*IF*/if (((C)->_use_current_state)==(1020)) {
  1345. /*IF*/if (((int)(C)->_require_assertion)) {
  1346. /*IF*/if (rT267use_current((T267*)(C)->_require_assertion)) {
  1347. C->_use_current_state=1018;
  1348. }
  1349. /*FI*/}
  1350. /*FI*/}
  1351. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  1352. /*IF*/if (((int)(C)->_routine_body)) {
  1353. /*IF*/if (rT140use_current((T140*)(C)->_routine_body)) {
  1354. C->_use_current_state=1018;
  1355. }
  1356. /*FI*/}
  1357. /*FI*/}
  1358. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  1359. /*IF*/if (((int)(C)->_ensure_assertion)) {
  1360. /*IF*/if (rT157use_current((T157*)(C)->_ensure_assertion)) {
  1361. C->_use_current_state=1018;
  1362. }
  1363. /*FI*/}
  1364. /*FI*/}
  1365. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  1366. C->_use_current_state=1017;
  1367. }
  1368. /*FI*/}
  1369. int rT280use_current(T280 *C){
  1370. int R=0;
  1371. {int iv1=(C)->_use_current_state;
  1372. if (1018 == iv1) goto l65;
  1373. goto l66;
  1374.  l65: ;
  1375. R=1;
  1376. goto l64;
  1377.  l66: ;
  1378. if (1017 == iv1) goto l67;
  1379. goto l68;
  1380.  l67: ;
  1381. goto l64;
  1382.  l68: ;
  1383. if (1019 == iv1) goto l69;
  1384. goto l70;
  1385.  l69: ;
  1386. C->_use_current_state=1020;
  1387. rT280compute_use_current(C);
  1388. R=rT280use_current(C);
  1389. goto l64;
  1390.  l70: ;
  1391. if (1020 == iv1) goto l71;
  1392. goto l72;
  1393.  l71: ;
  1394. R=1;
  1395. goto l64;
  1396.  l72: ;
  1397.  l64: ;
  1398. }
  1399. return R;
  1400. }
  1401. T0 * rT280run_class(T280 *C){
  1402. T0 * R=NULL;
  1403. R=XrT58run_class((C)->_current_type);
  1404. return R;
  1405. }
  1406. void rT280mapping_name(T280 *C){
  1407. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1189);
  1408. rT40put_integer((T40*)oRBC27cpp,rT280id(C));
  1409. XrT67mapping_c((C)->_name);
  1410. }
  1411. void rT280mapping_c(T280 *C){
  1412. /*IF*/if (rT212is_cse((T212*)(C)->_base_feature)) {
  1413. rT280mapping_cse(C);
  1414. }
  1415.  else if (rT212is_c((T212*)(C)->_base_feature)) {
  1416. rT40put_string((T40*)oRBC27cpp,((T212*)(C)->_base_feature)->_external_name);
  1417. rT40put_character((T40*)oRBC27cpp,'\50');
  1418. /*IF*/if ((rT280arg_count(C))>(0)) {
  1419. rT40put_arguments((T40*)oRBC27cpp);
  1420. }
  1421. /*FI*/rT40put_character((T40*)oRBC27cpp,'\51');
  1422. }
  1423. else {
  1424. rT40put_string((T40*)oRBC27cpp,((T212*)(C)->_base_feature)->_external_name);
  1425. rT40put_character((T40*)oRBC27cpp,'\50');
  1426. rT40put_target((T40*)oRBC27cpp);
  1427. /*IF*/if ((rT280arg_count(C))>(0)) {
  1428. rT40put_character((T40*)oRBC27cpp,'\54');
  1429. rT40put_arguments((T40*)oRBC27cpp);
  1430. }
  1431. /*FI*/rT40put_character((T40*)oRBC27cpp,'\51');
  1432. }
  1433. /*FI*/}
  1434. void rT280mapping_cse(T280 *C){
  1435. T0* _n=NULL;
  1436. T0* _bcn=NULL;
  1437. _bcn=((T48*)((T50*)((T212*)(C)->_base_feature)->_base_class)->_base_class_name)->_to_string;
  1438. _n=XrT67to_string((C)->_name);
  1439. /*IF*/if (rT7is_equal((T7*)(T0 *)ms184,_bcn)) {
  1440. rT280mapping_cse_general(C);
  1441. }
  1442.  else if (XrT58is_integer((C)->_current_type)) {
  1443. rT280mapping_cse_integer(C);
  1444. }
  1445.  else if (XrT58is_real((C)->_current_type)) {
  1446. rT280mapping_cse_real(C);
  1447. }
  1448.  else if (XrT58is_double((C)->_current_type)) {
  1449. rT280mapping_cse_double(C);
  1450. }
  1451.  else if (XrT58is_boolean((C)->_current_type)) {
  1452. rT280mapping_cse_boolean(C);
  1453. }
  1454.  else if (XrT58is_character((C)->_current_type)) {
  1455. rT280mapping_cse_character(C);
  1456. }
  1457.  else if (rT7is_equal(ms1581,_n)) {
  1458. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1582);
  1459. rT40put_target((T40*)oRBC27cpp);
  1460. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1583);
  1461. }
  1462.  else if ((rT7is_equal(ms1584,_n))||(rT7is_equal(ms1585,_n))) {
  1463. rT40put_string((T40*)oRBC27cpp,_n);
  1464. rT40put_character((T40*)oRBC27cpp,'\50');
  1465. rT40put_arguments((T40*)oRBC27cpp);
  1466. rT40put_character((T40*)oRBC27cpp,'\51');
  1467. }
  1468.  else if (((rT7is_equal(ms1586,_n))||(rT7is_equal(ms1587,_n)))||(rT7is_equal(ms1588,_n))) {
  1469. rT40put_string((T40*)oRBC27cpp,_n);
  1470. }
  1471. /*FI*/}
  1472. void rT280mapping_cse_general(T280 *C){
  1473. T0* _n=NULL;
  1474. _n=XrT67to_string((C)->_name);
  1475. /*IF*/if (rT7is_equal((T7*)(T0 *)ms1517,_n)) {
  1476. rT40put_string((T40*)oRBC27cpp,_n);
  1477. }
  1478.  else if (rT7is_equal((T7*)(T0 *)ms1516,_n)) {
  1479. rT40put_string((T40*)oRBC27cpp,_n);
  1480. rT40put_character((T40*)oRBC27cpp,'\133');
  1481. rT40put_arguments((T40*)oRBC27cpp);
  1482. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1560);
  1483. }
  1484.  else if (rT7is_equal((T7*)(T0 *)ms1162,_n)) {
  1485. rT40put_generating_type((T40*)oRBC27cpp,(C)->_current_type);
  1486. }
  1487.  else if (rT7is_equal((T7*)(T0 *)ms1178,_n)) {
  1488. rT40put_generator((T40*)oRBC27cpp,(C)->_current_type);
  1489. }
  1490. /*FI*/}
  1491. void rT280mapping_cse_integer(T280 *C){
  1492. T0* _n=NULL;
  1493. _n=rT280to_c_numeric_operator(XrT67to_string((C)->_name));
  1494. /*IF*/if ((rT280arg_count(C))==(1)) {
  1495. rT40put_character((T40*)oRBC27cpp,'\50');
  1496. rT40put_target((T40*)oRBC27cpp);
  1497. rT40put_character((T40*)oRBC27cpp,'\51');
  1498. rT40put_string((T40*)oRBC27cpp,_n);
  1499. rT40put_character((T40*)oRBC27cpp,'\50');
  1500. rT40put_arguments((T40*)oRBC27cpp);
  1501. rT40put_character((T40*)oRBC27cpp,'\51');
  1502. }
  1503.  else if (rT7is_equal(ms1564,XrT67to_string((C)->_name))) {
  1504. rT40put_target((T40*)oRBC27cpp);
  1505. }
  1506. else {
  1507. rT40put_string((T40*)oRBC27cpp,_n);
  1508. rT40put_character((T40*)oRBC27cpp,'\50');
  1509. rT40put_target((T40*)oRBC27cpp);
  1510. rT40put_character((T40*)oRBC27cpp,'\51');
  1511. }
  1512. /*FI*/}
  1513. void rT280mapping_cse_real(T280 *C){
  1514. T0* _n=NULL;
  1515. _n=XrT67to_string((C)->_name);
  1516. _n=rT280to_c_numeric_operator(_n);
  1517. /*IF*/if ((rT280arg_count(C))==(1)) {
  1518. rT40put_character((T40*)oRBC27cpp,'\50');
  1519. rT40put_target((T40*)oRBC27cpp);
  1520. rT40put_character((T40*)oRBC27cpp,'\51');
  1521. rT40put_string((T40*)oRBC27cpp,_n);
  1522. rT40put_character((T40*)oRBC27cpp,'\50');
  1523. rT40put_arguments((T40*)oRBC27cpp);
  1524. rT40put_character((T40*)oRBC27cpp,'\51');
  1525. }
  1526. else {
  1527. rT40put_string((T40*)oRBC27cpp,_n);
  1528. rT40put_character((T40*)oRBC27cpp,'\50');
  1529. rT40put_target((T40*)oRBC27cpp);
  1530. rT40put_character((T40*)oRBC27cpp,'\51');
  1531. }
  1532. /*FI*/}
  1533. void rT280mapping_cse_double(T280 *C){
  1534. T0* _n=NULL;
  1535. _n=XrT67to_string((C)->_name);
  1536. /*IF*/if (rT7is_equal(ms1565,_n)) {
  1537. rT40include((T40*)oRBC27cpp,(T0 *)ms537);
  1538. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1566);
  1539. rT40put_target((T40*)oRBC27cpp);
  1540. rT40put_character((T40*)oRBC27cpp,'\54');
  1541. rT40put_arguments((T40*)oRBC27cpp);
  1542. rT40put_character((T40*)oRBC27cpp,'\51');
  1543. }
  1544.  else if (rT7is_equal(ms1567,_n)) {
  1545. rT40include((T40*)oRBC27cpp,(T0 *)ms537);
  1546. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1568);
  1547. rT40put_target((T40*)oRBC27cpp);
  1548. rT40put_character((T40*)oRBC27cpp,'\51');
  1549. }
  1550.  else if (rT7is_equal(ms1569,_n)) {
  1551. rT40include((T40*)oRBC27cpp,(T0 *)ms537);
  1552. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1570);
  1553. rT40put_target((T40*)oRBC27cpp);
  1554. rT40put_character((T40*)oRBC27cpp,'\51');
  1555. }
  1556.  else if (rT7is_equal(ms1571,_n)) {
  1557. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1572);
  1558. rT40put_target((T40*)oRBC27cpp);
  1559. }
  1560. else {
  1561. _n=rT280to_c_numeric_operator(_n);
  1562. /*IF*/if ((rT280arg_count(C))==(1)) {
  1563. rT40put_character((T40*)oRBC27cpp,'\50');
  1564. rT40put_target((T40*)oRBC27cpp);
  1565. rT40put_character((T40*)oRBC27cpp,'\51');
  1566. rT40put_string((T40*)oRBC27cpp,_n);
  1567. rT40put_character((T40*)oRBC27cpp,'\50');
  1568. rT40put_arguments((T40*)oRBC27cpp);
  1569. rT40put_character((T40*)oRBC27cpp,'\51');
  1570. }
  1571. else {
  1572. rT40put_string((T40*)oRBC27cpp,_n);
  1573. rT40put_character((T40*)oRBC27cpp,'\50');
  1574. rT40put_target((T40*)oRBC27cpp);
  1575. rT40put_character((T40*)oRBC27cpp,'\51');
  1576. }
  1577. /*FI*/}
  1578. /*FI*/}
  1579. void rT280mapping_cse_boolean(T280 *C){
  1580. T0* _n=NULL;
  1581. T0* _c_operator=NULL;
  1582. _n=XrT67to_string((C)->_name);
  1583. /*IF*/if (rT7is_equal((T7*)(T0 *)ms102,_n)) {
  1584. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1573);
  1585. rT40put_target((T40*)oRBC27cpp);
  1586. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1574);
  1587. rT40put_arguments((T40*)oRBC27cpp);
  1588. rT40put_character((T40*)oRBC27cpp,'\51');
  1589. }
  1590. else {
  1591. _c_operator=rT280to_c_logical_operator(_n);
  1592. /*IF*/if ((rT280arg_count(C))==(1)) {
  1593. rT40put_character((T40*)oRBC27cpp,'\50');
  1594. rT40put_target((T40*)oRBC27cpp);
  1595. rT40put_character((T40*)oRBC27cpp,'\51');
  1596. rT40put_string((T40*)oRBC27cpp,_c_operator);
  1597. rT40put_character((T40*)oRBC27cpp,'\50');
  1598. rT40put_arguments((T40*)oRBC27cpp);
  1599. rT40put_character((T40*)oRBC27cpp,'\51');
  1600. }
  1601. else {
  1602. rT40put_string((T40*)oRBC27cpp,_c_operator);
  1603. rT40put_character((T40*)oRBC27cpp,'\50');
  1604. rT40put_target((T40*)oRBC27cpp);
  1605. rT40put_character((T40*)oRBC27cpp,'\51');
  1606. }
  1607. /*FI*/}
  1608. /*FI*/}
  1609. void rT280mapping_cse_character(T280 *C){
  1610. T0* _n=NULL;
  1611. _n=XrT67to_string((C)->_name);
  1612. /*IF*/if ((rT280arg_count(C))==(1)) {
  1613. rT40put_character((T40*)oRBC27cpp,'\50');
  1614. rT40put_target((T40*)oRBC27cpp);
  1615. rT40put_character((T40*)oRBC27cpp,'\51');
  1616. rT40put_string((T40*)oRBC27cpp,_n);
  1617. rT40put_character((T40*)oRBC27cpp,'\50');
  1618. rT40put_arguments((T40*)oRBC27cpp);
  1619. rT40put_character((T40*)oRBC27cpp,'\51');
  1620. }
  1621. else {
  1622. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1580);
  1623. rT40put_target((T40*)oRBC27cpp);
  1624. rT40put_character((T40*)oRBC27cpp,'\51');
  1625. }
  1626. /*FI*/}
  1627. int rT280is_exported_in(T280 *C,T0 * a1){
  1628. int R=0;
  1629. R=rT123gives_permission_to((T123*)rT280clients(C),a1);
  1630. return R;
  1631. }
  1632. void rT280initialize(T280 *C){
  1633. T0* _n=NULL;
  1634. C->_arguments=((T212*)(C)->_base_feature)->_arguments;
  1635. /*IF*/if ((((int)(C)->_arguments))&&((rT92count((T92*)(C)->_arguments))>(0))) {
  1636. C->_arguments=rT92to_runnable((T92*)(C)->_arguments,(C)->_current_type);
  1637. }
  1638. /*FI*/C->_result_type=XrT58to_runnable(((T212*)(C)->_base_feature)->_result_type,(C)->_current_type);
  1639. _n=XrT67to_string((C)->_name);
  1640. /*IF*/if (rT7is_equal((T7*)(T0 *)ms1516,_n)) {
  1641. /*(IRF3*/(((T40*)oRBC27cpp)->_environment_used)=(1);
  1642. /*)*/}
  1643.  else if (rT7is_equal((T7*)(T0 *)ms1517,_n)) {
  1644. /*(IRF3*/(((T40*)oRBC27cpp)->_environment_used)=(1);
  1645. /*)*/}
  1646. /*FI*/}
  1647. void rT280make(T280 *C,T0 * a1,T0 * a2,T0 * a3){
  1648. C->_current_type=a1;
  1649. C->_name=a2;
  1650. C->_base_feature=a3;
  1651. rT264put((T264*)((T260*)rT280run_class(C))->_feature_dictionary,(T0 *)C,XrT67to_key((C)->_name));
  1652. rT52incr_magic_count((T52*)oRBC27small_eiffel);
  1653. C->_use_current_state=1019;
  1654. rT52push((T52*)oRBC27small_eiffel,(T0 *)C);
  1655. rT280initialize(C);
  1656. rT52pop((T52*)oRBC27small_eiffel);
  1657. }
  1658. void rT280warning(/*C*/T0 * a1,T0* a2){
  1659. /*UT*/(T45*)oRBC27eh;
  1660. rT45add_position(a1);
  1661. rT45warning((T45*)oRBC27eh,a2);
  1662. }
  1663. int rT280is_static(T280 *C){
  1664. int R=0;
  1665. /*IF*/if (rT7is_equal((T7*)(T0 *)ms1109,XrT67to_string((C)->_name))) {
  1666. R=1;
  1667. /*IF*/if (XrT58is_expanded((C)->_current_type)) {
  1668. C->_static_value_mem=1;
  1669. }
  1670. /*FI*/}
  1671. /*FI*/return R;
  1672. }
  1673. void rT280compute_use_current(T280 *C){
  1674. /*IF*/if (rT212use_current((T212*)(C)->_base_feature)) {
  1675. C->_use_current_state=1018;
  1676. }
  1677. else {
  1678. rT280std_compute_use_current(C);
  1679. }
  1680. /*FI*/}
  1681. void rT280error(/*C*/T0 * a1,T0* a2){
  1682. /*UT*/(T45*)oRBC27eh;
  1683. rT45add_position(a1);
  1684. rT45error((T45*)oRBC27eh,a2);
  1685. }
  1686. void rT280add_clients(T280 *C,T0 * a1){
  1687. int _i=0;
  1688. /*IF*/if (!((C)->_actuals_clients)) {
  1689. C->_actuals_clients=ma(263,0,1,a1);
  1690. }
  1691. else {
  1692. _i=((T263*)(C)->_actuals_clients)->_lower;
  1693. while (!(((_i)>(((T263*)(C)->_actuals_clients)->_upper))||(((T0 *)rT263item((T263*)(C)->_actuals_clients,_i))==((T0 *)a1)))) {
  1694. _i=(_i)+(1);
  1695. }
  1696. /*IF*/if ((_i)>(((T263*)(C)->_actuals_clients)->_upper)) {
  1697. rT263add_last((T263*)(C)->_actuals_clients,a1);
  1698. }
  1699. /*FI*/}
  1700. /*FI*/}
  1701. T0 * rT280start_position(T280 *C){
  1702. T0 * R=NULL;
  1703. R=rT212start_position((T212*)(C)->_base_feature);
  1704. return R;
  1705. }
  1706. int rT280can_be_dropped(T280 *C){
  1707. int R=0;
  1708. rT280warning(rT280start_position(C),(T0 *)ms1552);
  1709. return R;
  1710. }
  1711. void rT280copy(T280 *C,T0 * a1){
  1712. /*IF*//*AF*//*AE*/
  1713. memcpy(C,a1,s[C->id]);
  1714. /*FI*/}
  1715. int rT280arg_count(T280 *C){
  1716. int R=0;
  1717. /*IF*/if (((int)(C)->_arguments)) {
  1718. R=rT92count((T92*)(C)->_arguments);
  1719. }
  1720. /*FI*/return R;
  1721. }
  1722. void rT280fall_down(T280 *C){
  1723. T0 * _rf=NULL;
  1724. T0 * _sub_name=NULL;
  1725. T0 * _sub_bc=NULL;
  1726. T0 * _current_bc=NULL;
  1727. T0 * _sub_rc=NULL;
  1728. T0 * _current_rc=NULL;
  1729. int _i=0;
  1730. T0* _running=NULL;
  1731. _current_rc=XrT58run_class((C)->_current_type);
  1732. _running=((T260*)_current_rc)->_running;
  1733. /*IF*/if (((int)_running)) {
  1734. _current_bc=XrT58base_class((C)->_current_type);
  1735. _i=((T263*)_running)->_lower;
  1736. while (!((_i)>(((T263*)_running)->_upper))) {
  1737. _sub_rc=rT263item((T263*)_running,_i);
  1738. /*IF*/if (((T0 *)_sub_rc)!=((T0 *)_current_rc)) {
  1739. _sub_bc=XrT58base_class(((T260*)_sub_rc)->_current_type);
  1740. _sub_name=rT50name_of((T50*)_sub_bc,_current_bc,(C)->_name);
  1741. _rf=rT260get_feature((T260*)_sub_rc,_sub_name);
  1742. }
  1743. /*FI*/_i=(_i)+(1);
  1744. }
  1745. }
  1746. /*FI*/}
  1747. void rT279address_of(T279 *C){
  1748. rT279mapping_name(C);
  1749. }
  1750. void rT279warning(/*C*/T0 * a1,T0* a2){
  1751. /*UT*/(T45*)oRBC27eh;
  1752. rT45add_position(a1);
  1753. rT45warning((T45*)oRBC27eh,a2);
  1754. }
  1755. void rT279compute_use_current(T279 *C){
  1756. /*IF*/if (rT211use_current((T211*)(C)->_base_feature)) {
  1757. C->_use_current_state=1018;
  1758. }
  1759. else {
  1760. rT279std_compute_use_current(C);
  1761. }
  1762. /*FI*/}
  1763. void rT279error(/*C*/T0 * a1,T0* a2){
  1764. /*UT*/(T45*)oRBC27eh;
  1765. rT45add_position(a1);
  1766. rT45error((T45*)oRBC27eh,a2);
  1767. }
  1768. void rT279add_clients(T279 *C,T0 * a1){
  1769. int _i=0;
  1770. /*IF*/if (!((C)->_actuals_clients)) {
  1771. C->_actuals_clients=ma(263,0,1,a1);
  1772. }
  1773. else {
  1774. _i=((T263*)(C)->_actuals_clients)->_lower;
  1775. while (!(((_i)>(((T263*)(C)->_actuals_clients)->_upper))||(((T0 *)rT263item((T263*)(C)->_actuals_clients,_i))==((T0 *)a1)))) {
  1776. _i=(_i)+(1);
  1777. }
  1778. /*IF*/if ((_i)>(((T263*)(C)->_actuals_clients)->_upper)) {
  1779. rT263add_last((T263*)(C)->_actuals_clients,a1);
  1780. }
  1781. /*FI*/}
  1782. /*FI*/}
  1783. T0 * rT279clients(T279 *C){
  1784. T0 * R=NULL;
  1785. T0 * _bfbc=NULL;
  1786. T0 * _bc=NULL;
  1787. _bc=XrT58base_class((C)->_current_type);
  1788. _bfbc=((T211*)(C)->_base_feature)->_base_class;
  1789. /*IF*/if (((T0 *)_bc)==((T0 *)_bfbc)) {
  1790. R=((T211*)(C)->_base_feature)->_clients;
  1791. }
  1792. else {
  1793. /*IF*/if (!(rT50is_subclass_of((T50*)_bc,_bfbc))) {
  1794. /*UT*/(T45*)oRBC27eh;
  1795. rT45add_position(XrT67start_position((C)->_name));
  1796. /*UT*/(T45*)oRBC27eh;
  1797. rT45add_position(rT211start_position((T211*)(C)->_base_feature));
  1798. /*UT*/(T45*)oRBC27eh;
  1799. rT45append(((T48*)((T50*)_bc)->_base_class_name)->_to_string);
  1800. /*UT*/(T45*)oRBC27eh;
  1801. rT45append((T0 *)ms1122);
  1802. /*UT*/(T45*)oRBC27eh;
  1803. rT45append(((T48*)((T50*)_bfbc)->_base_class_name)->_to_string);
  1804. rT279error(NULL,(T0 *)ms1123);
  1805. }
  1806. /*FI*/R=rT50clients_for((T50*)_bc,(C)->_name,(C)->_base_feature);
  1807. }
  1808. /*FI*/return R;
  1809. }
  1810. void rT279std_compute_use_current(T279 *C){
  1811. /*IF*/if (((C)->_use_current_state)==(1020)) {
  1812. /*IF*/if (((int)(C)->_require_assertion)) {
  1813. /*IF*/if (rT267use_current((T267*)(C)->_require_assertion)) {
  1814. C->_use_current_state=1018;
  1815. }
  1816. /*FI*/}
  1817. /*FI*/}
  1818. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  1819. /*IF*/if (((int)(C)->_routine_body)) {
  1820. /*IF*/if (rT140use_current((T140*)(C)->_routine_body)) {
  1821. C->_use_current_state=1018;
  1822. }
  1823. /*FI*/}
  1824. /*FI*/}
  1825. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  1826. /*IF*/if (((int)(C)->_ensure_assertion)) {
  1827. /*IF*/if (rT157use_current((T157*)(C)->_ensure_assertion)) {
  1828. C->_use_current_state=1018;
  1829. }
  1830. /*FI*/}
  1831. /*FI*/}
  1832. /*FI*//*IF*/if (((C)->_use_current_state)==(1020)) {
  1833. C->_use_current_state=1017;
  1834. }
  1835. /*FI*/}
  1836. int rT279id(T279 *C){
  1837. int R=0;
  1838. R=XrT58id((C)->_current_type);
  1839. return R;
  1840. }
  1841. T0 * rT279start_position(T279 *C){
  1842. T0 * R=NULL;
  1843. R=rT211start_position((T211*)(C)->_base_feature);
  1844. return R;
  1845. }
  1846. int rT279use_current(T279 *C){
  1847. int R=0;
  1848. {int iv1=(C)->_use_current_state;
  1849. if (1018 == iv1) goto l74;
  1850. goto l75;
  1851.  l74: ;
  1852. R=1;
  1853. goto l73;
  1854.  l75: ;
  1855. if (1017 == iv1) goto l76;
  1856. goto l77;
  1857.  l76: ;
  1858. goto l73;
  1859.  l77: ;
  1860. if (1019 == iv1) goto l78;
  1861. goto l79;
  1862.  l78: ;
  1863. C->_use_current_state=1020;
  1864. rT279compute_use_current(C);
  1865. R=rT279use_current(C);
  1866. goto l73;
  1867.  l79: ;
  1868. if (1020 == iv1) goto l80;
  1869. goto l81;
  1870.  l80: ;
  1871. R=1;
  1872. goto l73;
  1873.  l81: ;
  1874.  l73: ;
  1875. }
  1876. return R;
  1877. }
  1878. int rT279can_be_dropped(T279 *C){
  1879. int R=0;
  1880. rT279warning(rT279start_position(C),(T0 *)ms1551);
  1881. return R;
  1882. }
  1883. void rT279mapping_cse_general(T279 *C){
  1884. T0* _n=NULL;
  1885. _n=XrT67to_string((C)->_name);
  1886. /*IF*/if (rT7is_equal(ms1556,_n)) {
  1887. rT40put_c_inline_c((T40*)oRBC27cpp);
  1888. }
  1889.  else if (rT7is_equal(ms1557,_n)) {
  1890. rT40put_c_inline_h((T40*)oRBC27cpp);
  1891. }
  1892. /*FI*/}
  1893. void rT279mapping_c(T279 *C){
  1894. T0* _bcn=NULL;
  1895. /*IF*/if (rT211is_cse((T211*)(C)->_base_feature)) {
  1896. _bcn=((T48*)((T50*)((T211*)(C)->_base_feature)->_base_class)->_base_class_name)->_to_string;
  1897. /*IF*/if (rT7is_equal((T7*)(T0 *)ms184,_bcn)) {
  1898. rT279mapping_cse_general(C);
  1899. }
  1900. /*FI*/}
  1901.  else if (rT211is_c((T211*)(C)->_base_feature)) {
  1902. rT40put_string((T40*)oRBC27cpp,((T211*)(C)->_base_feature)->_external_name);
  1903. rT40put_character((T40*)oRBC27cpp,'\50');
  1904. /*IF*/if ((rT279arg_count(C))>(0)) {
  1905. rT40put_arguments((T40*)oRBC27cpp);
  1906. }
  1907. /*FI*/rT40put_string((T40*)oRBC27cpp,(T0 *)ms1558);
  1908. }
  1909. else {
  1910. rT40put_string((T40*)oRBC27cpp,((T211*)(C)->_base_feature)->_external_name);
  1911. rT40put_character((T40*)oRBC27cpp,'\50');
  1912. rT40put_target((T40*)oRBC27cpp);
  1913. /*IF*/if ((rT279arg_count(C))>(0)) {
  1914. rT40put_character((T40*)oRBC27cpp,'\54');
  1915. rT40put_arguments((T40*)oRBC27cpp);
  1916. }
  1917. /*FI*/rT40put_string((T40*)oRBC27cpp,(T0 *)ms1559);
  1918. }
  1919. /*FI*/}
  1920. void rT279mapping_name(T279 *C){
  1921. rT40put_string((T40*)oRBC27cpp,(T0 *)ms1189);
  1922. rT40put_integer((T40*)oRBC27cpp,rT279id(C));
  1923. XrT67mapping_c((C)->_name);
  1924. }
  1925. T0 * rT279run_class(T279 *C){
  1926. T0 * R=NULL;
  1927. R=XrT58run_class((C)->_current_type);
  1928. return R;
  1929. }
  1930. int rT279is_exported_in(T279 *C,T0 * a1){
  1931. int R=0;
  1932. R=rT123gives_permission_to((T123*)rT279clients(C),a1);
  1933. return R;
  1934. }
  1935. void rT279copy(T279 *C,T0 * a1){
  1936. /*IF*//*AF*//*AE*/
  1937. memcpy(C,a1,s[C->id]);
  1938. /*FI*/}
  1939. int rT279arg_count(T279 *C){
  1940. int R=0;
  1941. /*IF*/if (((int)(C)->_arguments)) {
  1942. R=rT92count((T92*)(C)->_arguments);
  1943. }
  1944. /*FI*/return R;
  1945. }
  1946. void rT279initialize(T279 *C){
  1947. T0* _n=NULL;
  1948. _n=XrT67to_string((C)->_name);
  1949. C->_arguments=((T211*)(C)->_base_feature)->_arguments;
  1950. /*IF*/if ((((int)(C)->_arguments))&&((rT92count((T92*)(C)->_arguments))>(0))) {
  1951. C->_arguments=rT92to_runnable((T92*)(C)->_arguments,(C)->_current_type);
  1952. }
  1953. /*FI*/}
  1954. void rT279fall_down(T279 *C){
  1955. T0 * _rf=NULL;
  1956. T0 * _sub_name=NULL;
  1957. T0 * _sub_bc=NULL;
  1958. T0 * _current_bc=NULL;
  1959. T0 * _sub_rc=NULL;
  1960. T0 * _current_rc=NULL;
  1961. int _i=0;
  1962. T0* _running=NULL;
  1963. _current_rc=XrT58run_class((C)->_current_type);
  1964. _running=((T260*)_current_rc)->_running;
  1965. /*IF*/if (((int)_running)) {
  1966. _current_bc=XrT58base_class((C)->_current_type);
  1967. _i=((T263*)_running)->_lower;
  1968. while (!((_i)>(((T263*)_running)->_upper))) {
  1969. _sub_rc=rT263item((T263*)_running,_i);
  1970. /*IF*/if (((T0 *)_sub_rc)!=((T0 *)_current_rc)) {
  1971. _sub_bc=XrT58base_class(((T260*)_sub_rc)->_current_type);
  1972. _sub_name=rT50name_of((T50*)_sub_bc,_current_bc,(C)->_name);
  1973. _rf=rT260get_feature((T260*)_sub_rc,_sub_name);
  1974. }
  1975. /*FI*/_i=(_i)+(1);
  1976. }
  1977. }
  1978. /*FI*/}
  1979. void rT279make(T279 *C,T0 * a1,T0 * a2,T0 * a3){
  1980. C->_current_type=a1;
  1981. C->_name=a2;
  1982. C->_base_feature=a3;
  1983. rT264put((T264*)((T260*)rT279run_class(C))->_feature_dictionary,(T0 *)C,XrT67to_key((C)->_name));
  1984. rT52incr_magic_count((T52*)oRBC27small_eiffel);
  1985. C->_use_current_state=1019;
  1986. rT52push((T52*)oRBC27small_eiffel,(T0 *)C);
  1987. rT279initialize(C);
  1988. rT52pop((T52*)oRBC27small_eiffel);
  1989. }
  1990. void rT278address_of(T278 *C){
  1991. rT278fatal_error_is_deferred(C);
  1992. }
  1993. void rT278compute_use_current(T278 *C){
  1994. rT278fatal_error_is_deferred(C);
  1995. }
  1996. void rT278fatal_error(/*C*/T0* a1){
  1997. rT45fatal_error((T45*)oRBC27eh,a1);
  1998. }
  1999.